Data storage systems are arrangements of hardware and software that include one or more storage processors coupled to arrays of non-volatile storage devices, such as magnetic disk drives, electronic flash drives, and/or optical drives, for example. The storage processors service storage requests, arriving from host machines (“hosts”), which specify files or other data elements to be written, read, created, or deleted, for example. Software running on the storage processors manages incoming storage requests and performs various data processing tasks to organize and secure the data elements stored on the non-volatile storage devices.
Many data storage systems include file systems. As is known, a file system is a structure for organizing files and directories. The files and directories are built upon allocation units of storage, which the file system arranges in a physical address space indexed by FSBN (File System Block Number). An “allocation unit” is the smallest unit of allocatable storage in a file system and is sometimes referred to as a “block.” An allocation unit may typically be 8 KB; however, allocation units may be of any size. A typical file system also includes metadata structures for organizing allocation units into files. For example, a file system may provide an inode and a set of block pointers for each file. The inode uniquely identifies the file and points to the block pointers, and the block pointers map logical addresses of the file to respective allocation units at respective physical addresses (FSBNs) in the file system.
Some file systems provide a cursor for assisting with storage allocation. The cursor generally starts at an initial, low value of FSBN and advances, one allocation unit at a time, to subsequent FSBNs as allocation proceeds.